import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store({
	// 声明状态
	state: {
		userInfo: {}, //用户信息
		openid: '' // 访问令牌
	},

	// store的计算属性
	getters: {
		hasLogin(state) {
			// 取两次反，会将原数据类型转为成布尔类型，有值就是true
			return !!state.openid;
		}
	},

	mutations: {

		// 只赋值状态值，不保存本地 obj: {userInfo: xxx, accessToken: xxx}
		setState(state, obj) {
			for (let key in obj) {
				// 获取每个key作为状态名，value作为状态值
				state[key] = obj[key];
			}
		},

		// 更新用户登录状态
		setToken(state, data) {

			// 赋值状态值和保存到本地
			if (data.token.access_token) {
				state.access_token = data.token.access_token;
				uni.setStorageSync('access_token_user', data.token.access_token);
			}

			if (data.token.refresh_token) {
				state.refresh_token = data.token.refresh_token;
				uni.setStorageSync('refresh_token_user', data.token.refresh_token);
			}


		},

		// 退出登录，触发
		logout(state) {
			// 状态清空
			state.userInfo = {};
			state.openid = '';
			// 移除本地数据
			uni.removeStorageSync('userInfo');
			uni.removeStorageSync('openid');
			uni.clearStorageSync();
		}

	}

});

export default store;